package controllers.GestionTratamientoDatos.Metodos.Correccion;

import controllers.GestionTratamientoDatos.Metodos.MetodosTratamientoDatos;

import models.Hidregistro;

import java.util.Date;
import java.util.List;

/**
 * Created with IntelliJ IDEA.
 * User: Daniel
 * Date: 07/02/13
 * Time: 12:27 PM
 * To change this template use File | Settings | File Templates.
 */
public class MetodoCorreccionBase extends MetodosTratamientoDatos{

    public int IntervaloDias;

    public MetodoCorreccionBase(List<Hidregistro> serieEntrada) {
        super(serieEntrada);
    }

    public MetodoCorreccionBase(List<Hidregistro> serieEntrada, int intervaloDias) {
        super(serieEntrada);
        IntervaloDias = intervaloDias;
    }

    public void Corregir()
    {

    }

    public Date ObtenerFechaMasIntervalo(Date fechaInicial)
    {
        Date copiaFechaInicial = fechaInicial;

        int diasMes[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};

        int anhoInicial = fechaInicial.getYear();
        int mesInicial = fechaInicial.getMonth();
        int diaInicial = fechaInicial.getDate();

        int diaActual = diaInicial + IntervaloDias;
        int mesActual = mesInicial;
        int anhoActual = anhoInicial;

        if(diaActual > diasMes[mesInicial])
        {
            diaActual -= diasMes[mesInicial];
            mesActual++;

            if(mesActual > 12)
            {
                mesActual = 1;
                anhoActual++;
            }
        }

        copiaFechaInicial.setYear(anhoActual);
        copiaFechaInicial.setMonth(mesActual);
        copiaFechaInicial.setDate(diaActual);
        copiaFechaInicial.setHours(0);
        copiaFechaInicial.setMinutes(0);
        copiaFechaInicial.setSeconds(0);

        return copiaFechaInicial;
    }

    public int RestaFecha(Date fechaInicio, Date fechaFin)
    {
        int diasMes[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};

        int anhoInicio = fechaInicio.getYear();
        int mesInicio = fechaInicio.getMonth();
        int diaInicio = fechaInicio.getDate();

        int anhoFin = fechaFin.getYear();
        int mesFin = fechaFin.getMonth();
        int diaFin = fechaFin.getDate();

        int totalDias = 0;

        if(anhoFin - anhoInicio > 0)
        {
            totalDias += 365 * (anhoFin - anhoInicio);
        }

        if(mesFin > mesInicio)
        {
            for (int i = mesInicio; i < mesFin; i++)
            {
                totalDias += diasMes[i];
            }
        }
        else
        {
            for (int i = 0; i < mesInicio; i++)
            {
                totalDias -= diasMes[i];
            }

            for (int j = 0; j < mesFin; j++)
            {
                totalDias += diasMes[j];
            }
        }

        totalDias += (diaFin - diaInicio);

        //System.out.println("total Dias: " + totalDias);
        return totalDias;
    }

    public int getIntervaloDias() {
        return IntervaloDias;
    }

    public void setIntervaloDias(int intervaloDias) {
        IntervaloDias = intervaloDias;
    }
}
